package net.valerijtimakov.homefinances.dao.storages.finances;

import java.util.Map;
import net.valerijtimakov.homefinances.domain.common.CathegoryItem;
import net.valerijtimakov.homefinances.exceptions.AppExceptionWrongState;
import net.valerijtimakov.homefinances.exceptions.AppPersProviderException;
import net.valerijtimakov.homefinances.exceptions.AppPersistentException;
import net.valerijtimakov.homefinances.exceptions.wrongarg.AppExceptionNullArgument;

public interface ICathegoryStorage {
	Map<Long, CathegoryItem> getAllUserCathegories(long userId) 
		throws AppPersProviderException, AppExceptionWrongState;
	Map<Long, CathegoryItem> getCathegories(long ... id) 
		throws AppPersProviderException, AppExceptionWrongState;
	void addCathegory(CathegoryItem item) throws AppPersProviderException, AppExceptionNullArgument, 
		AppExceptionWrongState, AppPersistentException;
	void removeCathegory(long ... id) throws AppPersProviderException, AppExceptionWrongState;
	void updateCathegory(CathegoryItem item) throws AppPersProviderException, AppExceptionWrongState;
}
